home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / libs / SSLib51.lha / SS.i < prev    next >
Text File  |  1995-01-16  |  18KB  |  488 lines

  1. ; The Special Support Library
  2. ; (c) 1993,1994 Martin Mares, MJSoft System Software
  3. ; --------------------------------------------------------------------------
  4.  
  5. ; Fields marked with 'R' are read-only, 'P' are private...
  6.  
  7. ; Library Version
  8.  
  9. SSVer    equ    5
  10.  
  11. ; Library Vector Offsets
  12.  
  13. _FuncOffset    set    -30
  14. Func    macro    *fname
  15. _LVO\1    equ    _FuncOffset
  16. _FuncOffset    set    _FuncOffset-6
  17.     endm
  18.  
  19. ; Program startup and exit
  20.     Func    StartupInit    ; (A0=StartupStruct,D7=WbMsg)
  21.     Func    ExitCleanup    ; ()
  22.     Func    ExitError    ; (A0=Text,A1=Params)
  23.     Func    DisplayError    ; (A0=Text,A1=Params)
  24.     Func    DosError    ; (A0=optional text,A1=Params)
  25.     Func    ReportError    ; (D0=ErrorCode,A1/D2/D3=Params)
  26.     Func    TestBreak    ; ()
  27. ; Miscellaneous services
  28.     Func    Printf        ; (A0=Text,A1=Params)
  29.     Func    Puts        ; (A0=Text)
  30.     Func    PutsNL        ; (A0=Text)
  31.     Func    FormatStr    ; (A0=Format,A1=Data,A2=DestBuf)
  32.     Func    StrCat        ; (A0=Dest,A1=Source) -> A0=AfterPtr
  33.     Func    StrToL        ; (A0=String)
  34.     Func    ParseArgs    ; (A0=Src,A1=Tmpl,A2=ExHelp,A3=StoreTo,
  35.                 ;  D0=Flags)
  36. ; General tracking services
  37.     Func    CreateResList    ; ()
  38.     Func    GetResList    ; ()
  39.     Func    FreeResList    ; ()
  40.     Func    FreeAllResLists    ; ()
  41.     Func    TrackObject    ; (D0=type)
  42.     Func    FreeObject    ; (A0=tracker)
  43.     Func    TrackRoutine    ; (A0=routine,A1=args)
  44.     Func    TrackExtd    ; (D0=type,D1=extsize)
  45.     Func    TrackSlave    ; (A0=master,A1=slave)
  46. ; Special tracking services
  47.     Func    TrackAllocMem    ; (D0=size,D1=requirements)
  48.     Func    TrackAlloc    ; (D0=size)
  49.     Func    TrackOpen    ; (A0=name,D0=openmode)
  50.     Func    TrackLock    ; (A0=name,D0=lockmode)
  51.     Func    TrackPort    ; ()
  52.     Func    TrackIoRq    ; (A0=OptionalPort,D0=size or 0)
  53.     Func    TrackSignal    ; ()
  54.     Func    TrackDevice    ; (A0=DevName,A1=IORQ,D0=unit,D1=flags,
  55.                 ;  A2=ErrorTable)
  56.     Func    TrackLibrary    ; (A0=LibName,D0=version)
  57.     Func    TrackDosObject    ; (D0=Type,A0=Tags)
  58. ; File operations
  59.     Func    LoadFile    ; (A0=name)
  60.     Func    ChkRead        ; (A0=tracker,A1=buffer,D0=size)
  61.     Func    ChkWrite    ; (A0=tracker,A1=buffer,D0=size)
  62. ; Hashed trees
  63.     Func    InitHashTree    ; (D0=NumBranches,D1=Flags)
  64.     Func    AddHashItem    ; (A0=HashTree,A1=Name,D0=DataSize)
  65.     Func    FindHashItem    ; (A0=HashTree,A1=Name)
  66. ; Filename manipulation
  67.     Func    AddExtension    ; (A0=Source,A1=Dest,A2=Ext,D0=MaxSize)
  68.     Func    SetExtension    ; (A0=Source,A1=Dest,A2=Ext,D0=MaxSize)
  69.     Func    GetExtension    ; (A0=FileName)
  70.     Func    RemExtension    ; (A0=FileName)
  71. ; Next generation of names ...
  72.     Func    ChkDoIO        ; (A0=Messsage,A1=DeviceTracker)
  73.     Func    SimpleRequest    ; (A0=Msg,A1=Params,A2=Gadgets)
  74. ; Private functions allowing SS extensions
  75.     Func    AddSSExtens    ; (A0=ExtNode)
  76.     Func    RemSSExtens    ; (A0=ExtNode)
  77. ; Version 3: Memory allocation with pools
  78.     Func    TrackPool    ; (D0=Quantum,D1=Threshold,D2=Flags)
  79.     Func    PoolAlloc    ; (A0=Pool,D0=size)
  80.     Func    PoolFree    ; (A0=Pool,A1=Address,D0=Size)
  81.     Func    TrackLinPool    ; (D0=Quantum,D1=Flags)
  82.     Func    LinearAlloc    ; (A0=Pool,D1=size)
  83.     Func    LinearAllocN    ; (A0=Pool,D1=size)
  84. ; Version 4: Sorting and misc
  85.     Func    MergeResLists    ; ()
  86.     Func    CallBlock    ; (A0=Routine,D0=LeaveResources)
  87.     Func    QuickSort    ; (A0=Field,D0=NumEl,D1=ElSize,A1=CFunc)
  88.     Func    SortStrings    ; (A0=Field,D0=NumEl)
  89.     Func    SortLongs    ; (A0=Field,D0=NumEl)
  90.     Func    SortList    ; (A0=List,A1=CompFunc)
  91.     Func    SortListName    ; (A0=List)
  92.     Func    TrackAllocPub    ; (D0=Size)
  93.     Func    RelinkObject    ; (A0=Object)
  94.     Func    TestStack    ; ()
  95. ; Version 5: Buffered I/O
  96.     Func    TrackOpenBuf    ; (A0=name,D0=openmode,D1=bufsize)
  97.     Func    TrackOpenBufFH    ; (A0=name,D0=openmode,D1=bufsize,D2=fh)
  98.     Func    TrackBufHandle    ; (A0=name,D0=openmode,D1=bufsize)
  99.     Func    ChkTryRead    ; (A0=tracker,A1=buffer,D0=size)
  100.     Func    BGetByte    ; (A2=tracker)
  101.     Func    BGetWord    ; (A2=tracker)
  102.     Func    BGetLong    ; (A2=tracker)
  103.     Func    BPutByte    ; (D0=char,A3=tracker)
  104.     Func    BPutWord    ; (D0=char,A3=tracker)
  105.     Func    BPutLong    ; (D0=char,A3=tracker)
  106.     Func    BPutChar    ; (D0=char,A3=tracker)
  107.     Func    BPutString    ; (A0=string,A3=tracker)
  108.     Func    BGetString    ; (A0=buf,D0=size,A2=tracker)
  109.     Func    BPuts        ; (A0=string,A3=tracker)
  110.     Func    BPutsNL        ; (A0=string,A3=tracker)
  111.     Func    BGets        ; (A0=buf,D0=size,A2=tracker)
  112.     Func    BPrintf        ; (A0=string,A1=data,A3=tracker)
  113.     Func    BRead        ; (A0=tracker,A2=buffer,D0=size)
  114.     Func    BWrite        ; (A0=tracker,A3=buffer,D0=size)
  115.     Func    BSeek        ; (A2=tracker,D0=offset)
  116.     Func    BRelSeek    ; (A2=tracker,D0=offset)
  117.     Func    BTell        ; (A2=tracker)
  118.     Func    BUnGetc        ; (D0=char,A2=tracker)
  119.     Func    BFlush        ; (A2=tracker)
  120. ; And some additional services:
  121.     Func    IPAlloc        ; (D0=size)
  122.     Func    IPFree        ; (A1=address,D0=size)
  123.  
  124. ; System Variables
  125.  
  126. _SysVarCnt    set    0
  127. SysVar    macro    *size,name
  128. _SysVarCnt    set    _SysVarCnt-\1
  129. \2    equ    _SysVarCnt
  130.     endm
  131.  
  132.     SysVar    0,ssbase    ;R Library base
  133.     SysVar    4,sv_basesize    ;P Size of system vars + user data above
  134.     SysVar    4,sv_wbmsg    ;R Workbench message (0=CLI)
  135.     SysVar    4,sv_thistask    ;R Pointer to task node
  136.     SysVar    4,sv_errsp    ;R Stack pointer to program return address
  137.     SysVar    4,sv_checkbase    ;P Base checkpoint - (0-BaseAddress)
  138.     SysVar    4,dosbase    ;R Dos base
  139.     SysVar    4,intuitionbase    ;R Intuition base
  140.     SysVar    4,gfxbase    ;R Graphics base
  141.     SysVar    4,gadtoolsbase    ;R Gadtools base
  142.     SysVar    4,utilitybase    ;R Utility base
  143.     SysVar    4,stdin        ;  Standard input stream
  144.     SysVar    4,stdout    ;  Standard output stream
  145.     SysVar    4,stderr    ;  Standard error stream
  146.     SysVar    4,sv_errsw    ;  Error switches (bitmap)
  147.     SysVar    4,sv_progname    ;  Program name
  148.     SysVar    4,sv_errrc    ;  ReturnCode for error, default=10
  149.  
  150.     SysVar    12,sv_reslistlist    ;P A list of resource lists
  151.     SysVar    8,sv_callernode    ;P Node of CallerList
  152.     SysVar    4,sv_rc        ;  ReturnCode
  153.  
  154.     SysVar    4,sv_wbcon    ;P Workbench console
  155.     SysVar    4,sv_template    ;P Program template
  156.     SysVar    4,sv_extrahelp    ;P Program extra help string
  157.     SysVar    4,sv_envvar    ;R Environment variable name
  158.     SysVar    4,sv_exitrout    ;  Subroutine called before res.freeing
  159.                 ;  (this pointer is cleared before calling)
  160.     SysVar    4,sv_msgrout    ;  Error message routine
  161.                 ;  (this pointer is cleared before calling)
  162.     SysVar    4,sv_oldexcept    ;P Pointer to original exception routine
  163.     SysVar    4,sv_flags    ;  Various flags (see below)
  164.     SysVar    4,sv_argdest    ;P Address to store arguments at
  165.     SysVar    4,sv_iconbase    ;P Pointer to IconBase
  166.     SysVar    4,sv_usertrk    ;  Pointer to UserTrkTypes structure or 0
  167.     SysVar    24,sv_mempool    ;P Task memory pool
  168.     SysVar    4,sv_lowmem    ;  Routine to be called when out of mem.
  169.     SysVar    4,sv_stklimit    ;  The lowest allowed SP value
  170.     SysVar    4,sv_defstderr    ;P Default stderr or 0
  171.     SysVar    4,sv_memattr    ;  Memory attributes for TrackAllocPub
  172.  
  173.     SysVar    0,sv_sizeof    ; Size of system variables block
  174.  
  175. ; Flags in sv_flags
  176.  
  177. svfb_nowbargs    equ    0        ;  Ignore WB arguments
  178. svfb_noprogname    equ    1        ;  Don't print program's name in CLI error msgs
  179. svfb_errorreq    equ    2        ;  Always use requesters for error msgs
  180. svfb_intrap    equ    3        ;P Running trap handler
  181. svfb_nostderr    equ    4        ;P sst_nostderr specified
  182. svfb_noiconarg    equ    5        ;  Don't pass names of multiselected icons as arg #1
  183. svfb_nocliargs    equ    6        ;  Pass CLI arguments directly w/o processing
  184. svfb_dontfree    equ    7        ;P Don't free memory from task mempool
  185.  
  186. svfm_nowbargs    equ    1
  187. svfm_noprogname    equ    2
  188. svfm_errorreq    equ    4
  189. svfm_intrap    equ    8
  190. svfm_nostderr    equ    16
  191. svfm_noiconarg    equ    32
  192. svfm_nocliargs    equ    64
  193. svfm_dontfree    equ    128
  194.  
  195. ; SS.library Base
  196.  
  197. _LibCnt    set    LIB_SIZE
  198. LibVar    macro    *size,name
  199. ssb_\2    equ    _LibCnt
  200. _LibCnt    set    _LibCnt+\1
  201.     endm
  202.  
  203.     LibVar    4,seglist    ;P SegList
  204.     LibVar    2,ksversion    ;R Kickstart version
  205.     LibVar    1,flags        ;  Some flags (see below)
  206.     LibVar    1,pad        ;P Not used yet
  207.     LibVar    4,dosbase    ;R DosBase
  208.     LibVar    4,intuibase    ;R IntuitionBase
  209.     LibVar    4,gfxbase    ;R GraphicsBase
  210.     LibVar    4,gadtoolsbase    ;R GadtoolsBase
  211.     LibVar    4,utilitybase    ;R UtilityBase
  212.     LibVar    12,callerlist    ;P A list of callers -used for crash recovery
  213.     LibVar    1,cputype    ;R CPU type (see tags for IDs)
  214.     LibVar    1,fputype    ;R FPU type ( --    ""    -- )
  215.     LibVar    16,extlist    ;P SS Extensions
  216.     LibVar    2,opencnt    ;P Private OpenCount
  217.     LibVar    SS_SIZE,callis    ;P Callerlist semaphore
  218.     LibVar    0,sizeof
  219.  
  220. ; Flags in ssb_flags
  221.  
  222. SSB_allow30    equ    0        ;R KS 3.0 services can be used
  223.  
  224. ; Startup structure
  225.  
  226. pa_varsize    equ    0        ;  Size of user's variables, incl. ssbase
  227. pa_reqssver    equ    2        ;  Required version of ss.library
  228. pa_firsttag    equ    4        ;  First tag
  229.  
  230. ; Tag types
  231.  
  232. sstag_old    equ    $0000        ; Old SSLib tags
  233. sstag_ext    equ    $4000        ; Extended tags
  234. sstag_std    equ    $8000        ; Standard tags (two longwords)
  235. sstag_new    equ    $C000        ; New tags (ignored when not understood)
  236.  
  237. sstag_nopar    equ    $0000        ; No parameters or special processing
  238. sstag_word    equ    $1000        ; One word
  239. sstag_long    equ    $2000        ; One longword
  240. sstag_string    equ    $3000        ; One string
  241.  
  242. ; Tags
  243. ; (The tag array = { DC.W TagType [ Parameters ] EVEN } ... )
  244. ; RelPtr = APTR - *
  245.  
  246. sst_finish    equ    0    ; End of the TagList
  247. sst_wbconsole    equ    1    ; Create console if started from WB
  248. sst_template    equ    2    ; Template: STR,A5-offset-to-store-args-on
  249. sst_usertrk    equ    3    ; Define UserTrkTypes: WORD RelPtr
  250. sst_extrahelp    equ    4    ; Extra help string: STR
  251. sst_exitrout    equ    5    ; Exit routine: WORD RelPTR
  252. sst_usererr    equ    6    ; Err routine: WORD RelPTR
  253. sst_nowbstart    equ    7    ; Forbid start from workbench
  254. sst_library    equ    8    ; Open library: STR,WORD MinVer,WORD BaseOffset
  255. sst_trylib    equ    9    ; Try to open library (don't fail) - same as ^
  256. sst_nowbargs    equ    10    ; Ignore WB arguments
  257. sst_noprogname    equ    11    ; Don't print program's name in error messages
  258. sst_cputype    equ    12    ; Required CPU type: BYTE Min,Max
  259.             ; 0..4=68000..68040,-1=NoMax
  260. sst_fputype    equ    13    ; Required FPU type: BYTE Min,-1 (max not supported)
  261.             ; 0=none,1=68881,2=68882,3=68040
  262. sst_sysver    equ    14    ; Required kickstart version: BYTE Min,Max(-1=NoMax)
  263. sst_errorreq    equ    15    ; Forces using of requesters for error messages
  264. sst_nostderr    equ    16    ; stderr=stdout (don't open '*')
  265. sst_errors    equ    17    ; Disable automatic error processing:
  266.             ; (default is to write an error message and exit)
  267.             ; LONG ErrBitMap
  268. sst_wbconname    equ    18    ; WB Console specified by name: STR FileName
  269. sst_envvar    equ    19    ; ENV variable: STR
  270. sst_last    equ    20
  271.  
  272. sst_poolsize    equ    $E000    ; Set size of task private mempool: LONG size
  273. PMP_DEFSIZE    equ    512    ; Default value
  274. sst_poolthresh    equ    $E001    ; Set threshold of priv. mempool: LONG threshold
  275. PMP_DEFTHRESH    equ    373    ; Default value
  276. sst_noiconarg    equ    $C002    ; Don't use names of multiselected icons as arg #1
  277. sst_nocliargs    equ    $C003    ; Pass CLI arguments directly without any processing
  278.  
  279. ; Error numbers - normal errors - can be disabled (-> 0 is returned as a result)
  280.  
  281. err_memory    equ    0    ; Insufficient memory
  282. err_openread    equ    1    ; Unable to open file %s for reading
  283. err_openwrite    equ    2    ; Unable to open file %s for writing
  284. err_lock    equ    3    ; Unable to access %s (usually when locking)
  285. err_signal    equ    4    ; Unable to get free signal
  286. err_device    equ    5    ; Unable to open device %s
  287. err_read    equ    6    ; Error reading file %s
  288. err_write    equ    7    ; Error writing file %s
  289. err_break    equ    8    ; Break
  290. err_port    equ    9    ; Unable to get message port
  291. err_iorq    equ    10    ; Unable to get iorq
  292. err_library    equ    11    ; You need %s.library
  293. err_library2    equ    12    ; You need version %ld of %s.library
  294. err_number    equ    13    ; Bad number
  295. err_iofail    equ    14    ; %s: %s error #%ld (ChkDoIO failed, unknown error)
  296. err_iofail2    equ    15    ; %s: %s (ChkDoIO failed, error found in table)
  297. err_interact    equ    16    ; File %s is interactive and cannot be loaded
  298. err_stack    equ    17    ; Stack overflow. Turning off ignored.
  299. err_unpack    equ    18    ; Error while decrunching
  300. err_seek    equ    19    ; Seek error on %s
  301. err_over    equ    20    ; Buffer overflow while reading %s
  302. err_maximal    equ    21
  303.  
  304. ; Alerts
  305.  
  306. AN_SSLIB    equ    $35530000
  307. AN_ExitCrash    equ    $35530001    ; ExitCleanup can't locate caller
  308. AN_BadTag    equ    $35530002    ; Invalid tag ID encountered
  309. AN_BadTracker    equ    $35530003    ; Invalid tracker ID in FreeObject()
  310. AN_BadUsrTrkr    equ    $35530004    ; Bad user tracker ID in FreeObject()
  311. AN_BadExtTrkr    equ    $35530005    ; Bad extension tracker ID, FreeObject()
  312. AN_FreeObject    equ    $35530006    ; Freeing already freed tracker
  313. AN_DupSlave    equ    $35530007    ; Slave of two masters (TrackSlave())
  314. AN_PoolFree    equ    $35530008    ; MemList not found
  315. AN_AllocZero    equ    $35530009    ; Attempt to allocate 0 bytes of memory
  316. AN_IoNotSupported equ    $3553000A    ; Attempt to write a read stream etc.
  317.  
  318. ; Resource list, must be allocated by CreateResList, freed by FreeResList
  319.  
  320. resl_node    equ    0        ;  Standard MinNode
  321. resl_list    equ    8        ;  Standard MinList of resource trackers
  322. resl_sizeof    equ    20
  323.  
  324. ; Resource tracker, must be allocated and freed using SSLib
  325.  
  326. trk_node    equ    0        ;  Standard MinNode
  327. trk_type    equ    8        ;R Tracker type (byte)
  328. trk_flags    equ    9        ;R Tracker flags (byte)
  329. trk_size    equ    10        ;R Size of tracker node (word)
  330. trk_chain    equ    12        ;R Pointer to next slave in chain
  331. trk_data    equ    16        ;  First data longword
  332. trk_ext    equ    20        ;  Second data longword
  333. trk_sizeof    equ    24
  334.  
  335. ; Tracker flags
  336.  
  337. trf_master    equ    0        ;P Is a master tracker
  338. trf_slave    equ    1        ;P Is a slave tracker
  339.  
  340. ; UserTrkTypes structure
  341.  
  342. utt_nr    equ    0        ;  Number of user tracker types
  343. utt_flags    equ    1        ;  Reserved for future use
  344. utt_addrs    equ    2        ;  Array of RelPtrs to freeing routines
  345.                 ;  Routines called with: A0=tracker
  346.                 ;  A2=pointer to trk_data in the tracker
  347.  
  348. ; Standard tracker types
  349.  
  350. trt_null    equ    0        ;  Do nothing - you can use it freely
  351. trt_routine    equ    1        ;  Call routine (trk_data=routine)
  352. trt_memory    equ    2        ;  Free memory (address,length)
  353. trt_file    equ    3        ;  Close file (handle,name)
  354. trt_lock    equ    4        ;  Unlock lock (lock,name)
  355. trt_port    equ    5        ;  Remove port (port)
  356. trt_iorq    equ    6        ;  Remove IoRequest (iorq,port tracker)
  357. trt_signal    equ    7        ;  Free signal (signal)
  358. trt_device    equ    8        ;  Close device (iorq,-,errtable)
  359. trt_library    equ    9        ;  Close library (libbase)
  360. trt_dosobj    equ    10        ;  Free dos object (object,type)
  361. trt_diskobj    equ    11        ;P FreeDiskObject() (used by WB startup)
  362. trt_mempool    equ    12        ;P Free memory pool
  363. trt_args    equ    13        ;P Free argument buffer
  364. trt_linpool    equ    14        ;P Free linear memory pool
  365. trt_bufioh    equ    15        ;  Buffered I/O handle
  366. trt_max    equ    16        ;  Number of standard tracker types
  367.  
  368. trt_free    equ    $3F        ;P Freed tracker (Freeing causes alert)
  369. trt_ext    equ    $40        ;P First tracker type reserved for SSLib
  370.                 ;P extensions
  371. trt_extmax    equ    $7F        ;P Last type for extensions
  372. trt_user    equ    $80        ;  First tracker type available to user
  373. trt_usermax    equ    $FF        ;  Last tracker type available to user
  374.  
  375. ; Special open modes
  376.  
  377. OPEN_NEW    equ    -1        ;  Create new file (MODE_NEWFILE)
  378. OPEN_OLD    equ    -2        ;  Open old file R/W (MODE_OLDFILE)
  379. OPEN_APPEND    equ    -3        ;  MODE_READWRITE and seek to end
  380.  
  381. ; Hashed tree - internal structure stored in HashTree tracker
  382.  
  383. htr_numbr    equ    trk_sizeof+0    ;P Number of branches - 1
  384. htr_flags    equ    trk_sizeof+4    ;P Flags
  385. htr_pad    equ    trk_sizeof+5    ;P Unused
  386. htr_partsize    equ    trk_sizeof+6    ;P Size of each tree part
  387. htr_firstpart    equ    trk_sizeof+10    ;P Pointer to first tree part
  388. htr_partfree    equ    trk_sizeof+14    ;P Free bytes in first tree part
  389. htr_hashtable    equ    trk_sizeof+18    ;P Pointer to hash table
  390. htr_sizeof    equ    22
  391.  
  392. partsize_def    equ    4096        ;P Default part size
  393.  
  394. ; Hashed tree flags
  395.  
  396. htf_nocase    equ    0        ;  Case insensitive
  397. htb_nocase    equ    1
  398.  
  399. ; Hashed tree part
  400.  
  401. hpa_nextpart    equ    0        ;P Pointer to next part
  402. hpa_partdata    equ    4        ;P Data stored in this part
  403.  
  404. ; Hashed tree item
  405.  
  406. hit_next    equ    0        ;P Next entry with the same hash value
  407. hit_udsize    equ    4        ;R Size of user data
  408. hit_ud    equ    6        ;  User data followed by key string
  409.  
  410. ; Memory pool - internal structure stored in MemPool tracker
  411.  
  412. mpt_quantum    equ    trk_data    ;P Memory quantum
  413. mpt_thresh    equ    trk_ext        ;P Allocation threshold
  414. mpt_flags    equ    trk_sizeof+0    ;P Memory flags
  415. mpt_fraglist    equ    trk_sizeof+4    ;P List of memory fragments
  416. mpt_sizeof    equ    trk_sizeof+16
  417.  
  418. ; Memory fragment header
  419.  
  420. mfr_node    equ    0        ;P MemHeader of this fragment
  421. mfr_size    equ    MH_SIZE        ;P Size of memory fragment header
  422.  
  423. ; Linear memory pool - stored in LinPool tracker
  424.  
  425. lmp_quantum    equ    trk_data    ;P Memory quantum
  426. lmp_flags    equ    trk_ext        ;P Memory flags
  427. lmp_first    equ    trk_sizeof+0    ;P First fragment
  428. lmp_free    equ    trk_sizeof+4    ;P First free zone
  429. lmp_last    equ    trk_sizeof+8    ;P End of this free zone
  430. lmp_sizeof    equ    trk_sizeof+12
  431.  
  432. ; ParseArgs flags
  433.  
  434. pafb_nofail    equ    0        ;  Return 0 on errors (default: msg+exit)
  435. pafb_noclear    equ    1        ;  Don't clear argument field (leave defaults)
  436. pafb_ignorea    equ    2        ;  Don't check presence of /A arguments
  437.  
  438. pafm_nofail    equ    1
  439. pafm_noclear    equ    2
  440. pafm_ignorea    equ    4
  441.  
  442. ; Extension node (private)
  443.  
  444. exn_number    equ    0        ;P extension number (0-3)
  445. exn_rfu    equ    1        ;P should be 0
  446. exn_trktypes    equ    2        ;P pointer to UserTrk-style array
  447. exn_sizeof    equ    6
  448.  
  449. ; Buffered I/O Handle Tracker
  450.  
  451. bh_handle    equ    trk_data    ;  File handle (passed to I/O routines)
  452. bh_name    equ    trk_ext        ;  File name (for error reports)
  453. bh_readfunc    equ    trk_sizeof    ;  Function for reading (Trk,Buf,Size)
  454. bh_writefunc    equ    trk_sizeof+4    ;  Function for writing (Trk,Buf,Size)
  455. bh_seekfunc    equ    trk_sizeof+8    ;  Function for seeking (Trk,AbsPos)
  456. bh_bufsize    equ    trk_sizeof+12    ;R Buffer size
  457. bh_buffer    equ    trk_sizeof+16    ;R Pointer to buffer start
  458. bh_current    equ    trk_sizeof+20    ;  Pointer to current pos'n in buffer
  459. bh_dataend    equ    trk_sizeof+24    ;R Pointer to 1st byte after data in buf
  460.                 ;  (read streams only)
  461. bh_bufend    equ    trk_sizeof+28    ;R Pointer to 1st byte after buffer
  462. bh_position    equ    trk_sizeof+32    ;R Position of 1st char in buffer
  463. bh_a5    equ    trk_sizeof+36    ;P Backup of caller's A5
  464. bh_eofhook    equ    trk_sizeof+40    ;  Routine to be called on EOF
  465. bh_flags    equ    trk_sizeof+44    ;R Flags (byte)
  466. bh_pad    equ    trk_sizeof+45    ;P RFU
  467. bh_arg1    equ    trk_sizeof+46    ;  Reserved for I/O routines
  468. bh_arg2    equ    trk_sizeof+50    ;  Reserved for I/O routines
  469. bh_sizeof    equ    trk_sizeof+54
  470.  
  471. ; Buffered I/O Flags
  472.  
  473. biob_read    equ    0        ;P Read stream
  474. biob_write    equ    1        ;P Write stream
  475. biob_linebuf    equ    2        ;P Line buffering
  476. biob_closefh    equ    3        ;P bh_handle contains FH to be freed
  477. biob_eof    equ    7        ;R EOF encountered
  478.  
  479. biof_read    equ    1
  480. biof_write    equ    2
  481. biof_linebuf    equ    4
  482. biof_closefh    equ    8
  483. biof_eof    equ    128
  484.  
  485. ; Buffered I/O Open Flags (ADDed, not ORed !!!)
  486.  
  487. OPEN_LINEBUF    equ    16        ;  Use line buffering if interactive
  488.